package controller;


import dao.PermissionDao;
import dao.PositionDao;
import dao.RolePermissionDao;
import entity.Permission;
import entity.RolePermission;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

@Controller
@RequestMapping("/Permission")
@Scope("prototype")
public class PermissionController {
    @Autowired
    private PermissionDao permissionDao;
    @Autowired
    public RolePermissionDao rolePermissionDao;

    @RequestMapping("/Jurisdiction")
    @ResponseBody
    public List<Permission> Jurisdiction(long PosId){
        List<Permission> list1 = permissionDao.getAll();
        List<Permission> list2 = permissionDao.query(PosId);
        for(Permission l1:list1){
            for(Permission p2:list2){
                if(l1.getrId()==p2.getrId()){
                    l1.setIsselect(1);
                }
            }
        }
        return list1;
    }


    @RequestMapping("/doGrant")
    @ResponseBody
    public String doGrant(String permissionids,long roleid){
        if(!permissionids.equals("asd")){
            String s = permissionids.substring(0,permissionids.length()-1) ;
            String[] ss =s.split("-") ;
            Long[] ids = new Long[ss.length] ;
            for(int i=0;i<ss.length;i++){
                ids[i] = Long.parseLong(ss[i]) ;
            }
            Long[] parentids = permissionDao.queryByChildId(ids);
            RolePermission rolePermission = rolePermissionDao.getRolePermissionByPosId(roleid);
            if(rolePermission!=null){
                // 删除角色id
                if(rolePermissionDao.del(roleid)){
                    // 循环添加父权限
                    for(int i=0;i<parentids.length;i++){
                        rolePermissionDao.add(parentids[i],roleid);
                    }
                    // 循环添加子权限
                    for(int i=0;i<ids.length;i++){
                        rolePermissionDao.add(ids[i],roleid);
                    }
                }
            }else{
                for(int i=0;i<parentids.length;i++){
                    rolePermissionDao.add(parentids[i],roleid);
                }
                for(int i=0;i<ids.length;i++){
                    rolePermissionDao.add(ids[i],roleid);
                }
            }
        }else{
            rolePermissionDao.del(roleid);
        }
        return "ok" ;
    }


}
